/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entities;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedNativeQueries;
import javax.persistence.NamedNativeQuery;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author damfercer
 */
@Entity
@Table(name = "usuario", catalog = "corporate", schema = "")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Usuario.findAll", query = "SELECT u FROM Usuario u"),
    @NamedQuery(name = "Usuario.findByIdUsuario", query = "SELECT u FROM Usuario u WHERE u.idUsuario = :idUsuario"),
    @NamedQuery(name = "Usuario.findByNombreUsuario", query = "SELECT u FROM Usuario u WHERE u.nombreUsuario = :nombreUsuario"),
    @NamedQuery(name = "Usuario.findByPassword", query = "SELECT u FROM Usuario u WHERE u.password = :password"),
    @NamedQuery(name = "Usuario.findByFechaRegistro", query = "SELECT u FROM Usuario u WHERE u.fechaRegistro = :fechaRegistro"),
    @NamedQuery(name = "Usuario.findByUserAndPass", query = "SELECT u FROM Usuario u WHERE u.nombreUsuario = :nombreUsuario AND u.password= :password"),
    @NamedQuery(name = "Usuario.findByFechaUltimaEntrada", query = "SELECT u FROM Usuario u WHERE u.fechaUltimaEntrada = :fechaUltimaEntrada")})
@NamedNativeQueries({
    @NamedNativeQuery(name = "Usuario.findByAlmacen", query = "SELECT usuario.* FROM usuario_tienda LEFT JOIN usuario ON usuario.ID_USUARIO=usuario_tienda.USUARIO WHERE TIENDA IN(SELECT TIENDA FROM almacen_tienda WHERE ALMACEN=1)")
})
public class Usuario implements Serializable {
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuario")
    private List<Ticket> ticketList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<Caja> cajaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuario")
    private List<UsuarioTienda> usuarioTiendaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<UsuarioTienda> usuarioTiendaCreadorList;
    @OneToMany(mappedBy = "usuario")
    private List<Notificacion> notificacionList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<TerminalPuntoVenta> terminalPuntoVentaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<EnvioTraspasoMercancia> envioTraspasoMercanciaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<Almacen> almacenList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuario")
    private List<RecepcionTraspasoMercancia> recepcionTraspasoMercanciaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<TipoAlmacen> tipoAlmacenList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<PeticionTraspasoMercancia> peticionTraspasoMercanciaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<NivelPrecioTipoTienda> nivelPrecioTipoTiendaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<TipoTienda> tipoTiendaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<NivelPrecioProducto> nivelPrecioProductoList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<MultiplicadorProductoPedido> multiplicadorProductoPedidoList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<FacturaMultimarca> facturaMultimarcaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<PvpInternacional> pvpInternacionalList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "ultimoUsuario")
    private List<PvpInternacional> pvpInternacionalList1;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<PedidoFabrica> creadorPedidoFabricaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "ultimoUsuario")
    private List<PedidoFabrica> ultimoUsuarioPedidoFabricaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<Estimacion> estimacionList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "ultimoUsuario")
    private List<Estimacion> estimacionList1;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<EstadoPedido> estadoPedidoList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<Tienda> tiendaList;
    @OneToMany(mappedBy = "usuarioCreador")
    private List<Cliente> clienteList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<Pedido> pedidoList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<TipoCliente> tipoClienteList;
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "ID_USUARIO")
    private Integer idUsuario;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 50)
    @Column(name = "NOMBRE_USUARIO")
    private String nombreUsuario;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 15)
    @Column(name = "PASSWORD")
    private String password;
    @Basic(optional = false)
    @NotNull
    @Column(name = "FECHA_REGISTRO")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaRegistro;
    @Basic(optional = false)
    @NotNull
    @Column(name = "FECHA_ULTIMA_ENTRADA")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaUltimaEntrada;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<D> dList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<SerieTallaje> serieTallajeList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<FormaPago> formaPagoList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<Pais> paisList;
    @JoinColumn(name = "TIPO_USUARIO", referencedColumnName = "ID_TIPO_USUARIO")
    @ManyToOne(optional = false)
    private TipoUsuario tipoUsuario;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<C> cList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<Talla> tallaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<Sexo> sexoList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuario")
    private List<HistoricoProducto> historicoProductoList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<Provincia> provinciaList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<Resto> restoList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<EtapaProducto> etapaProductoList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<S> sList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuarioCreador")
    private List<Temporada> temporadaList;
    @OneToMany(mappedBy = "ultimoUsuario")
    private List<Producto> productosUltimoModificadoList;
    @OneToMany(mappedBy = "usuarioCreador")
    private List<Producto> productosCreadosList;
    @OneToMany(mappedBy = "usuarioCreador")
    private List<Proveedor> proveedorList;
    @OneToMany(mappedBy = "usuarioCreador")
    private List<TipoUsuario> tipoUsuarioList;

    public Usuario() {
    }

    public Usuario(Integer idUsuario) {
        this.idUsuario = idUsuario;
    }

    public Usuario(Integer idUsuario, String nombreUsuario, String password, Date fechaRegistro, Date fechaUltimaEntrada) {
        this.idUsuario = idUsuario;
        this.nombreUsuario = nombreUsuario;
        this.password = password;
        this.fechaRegistro = fechaRegistro;
        this.fechaUltimaEntrada = fechaUltimaEntrada;
    }

    public Integer getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(Integer idUsuario) {
        this.idUsuario = idUsuario;
    }

    public String getNombreUsuario() {
        return nombreUsuario;
    }

    public void setNombreUsuario(String nombreUsuario) {
        this.nombreUsuario = nombreUsuario;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Date getFechaRegistro() {
        return fechaRegistro;
    }

    public void setFechaRegistro(Date fechaRegistro) {
        this.fechaRegistro = fechaRegistro;
    }

    public Date getFechaUltimaEntrada() {
        return fechaUltimaEntrada;
    }

    public void setFechaUltimaEntrada(Date fechaUltimaEntrada) {
        this.fechaUltimaEntrada = fechaUltimaEntrada;
    }

    @XmlTransient
    public List<D> getDList() {
        return dList;
    }

    public void setDList(List<D> dList) {
        this.dList = dList;
    }

    @XmlTransient
    public List<SerieTallaje> getSerieTallajeList() {
        return serieTallajeList;
    }

    public void setSerieTallajeList(List<SerieTallaje> serieTallajeList) {
        this.serieTallajeList = serieTallajeList;
    }

    @XmlTransient
    public List<FormaPago> getFormaPagoList() {
        return formaPagoList;
    }

    public void setFormaPagoList(List<FormaPago> formaPagoList) {
        this.formaPagoList = formaPagoList;
    }

    @XmlTransient
    public List<Pais> getPaisList() {
        return paisList;
    }

    public void setPaisList(List<Pais> paisList) {
        this.paisList = paisList;
    }

    public TipoUsuario getTipoUsuario() {
        return tipoUsuario;
    }

    public void setTipoUsuario(TipoUsuario tipoUsuario) {
        this.tipoUsuario = tipoUsuario;
    }

    @XmlTransient
    public List<C> getCList() {
        return cList;
    }

    public void setCList(List<C> cList) {
        this.cList = cList;
    }

    @XmlTransient
    public List<Talla> getTallaList() {
        return tallaList;
    }

    public void setTallaList(List<Talla> tallaList) {
        this.tallaList = tallaList;
    }

    @XmlTransient
    public List<Sexo> getSexoList() {
        return sexoList;
    }

    public void setSexoList(List<Sexo> sexoList) {
        this.sexoList = sexoList;
    }

    @XmlTransient
    public List<HistoricoProducto> getHistoricoProductoList() {
        return historicoProductoList;
    }

    public void setHistoricoProductoList(List<HistoricoProducto> historicoProductoList) {
        this.historicoProductoList = historicoProductoList;
    }

    @XmlTransient
    public List<Provincia> getProvinciaList() {
        return provinciaList;
    }

    public void setProvinciaList(List<Provincia> provinciaList) {
        this.provinciaList = provinciaList;
    }

    @XmlTransient
    public List<Resto> getRestoList() {
        return restoList;
    }

    public void setRestoList(List<Resto> restoList) {
        this.restoList = restoList;
    }

    @XmlTransient
    public List<EtapaProducto> getEtapaProductoList() {
        return etapaProductoList;
    }

    public void setEtapaProductoList(List<EtapaProducto> etapaProductoList) {
        this.etapaProductoList = etapaProductoList;
    }

    @XmlTransient
    public List<S> getSList() {
        return sList;
    }

    public void setSList(List<S> sList) {
        this.sList = sList;
    }

    @XmlTransient
    public List<Temporada> getTemporadaList() {
        return temporadaList;
    }

    public void setTemporadaList(List<Temporada> temporadaList) {
        this.temporadaList = temporadaList;
    }


    @XmlTransient
    public List<Proveedor> getProveedorList() {
        return proveedorList;
    }

    public void setProveedorList(List<Proveedor> proveedorList) {
        this.proveedorList = proveedorList;
    }

    @XmlTransient
    public List<TipoUsuario> getTipoUsuarioList() {
        return tipoUsuarioList;
    }

    public void setTipoUsuarioList(List<TipoUsuario> tipoUsuarioList) {
        this.tipoUsuarioList = tipoUsuarioList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idUsuario != null ? idUsuario.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Usuario)) {
            return false;
        }
        Usuario other = (Usuario) object;
        if ((this.idUsuario == null && other.idUsuario != null) || (this.idUsuario != null && !this.idUsuario.equals(other.idUsuario))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entities.Usuario[ idUsuario=" + idUsuario + " ]";
    }

    /**
     * @return the productosUltimoModificadoList
     */
    @XmlTransient
    public List<Producto> getProductosUltimoModificadoList() {
        return productosUltimoModificadoList;
    }

    /**
     * @param productosUltimoModificadoList the productosUltimoModificadoList to set
     */
    public void setProductosUltimoModificadoList(List<Producto> productosUltimoModificadoList) {
        this.productosUltimoModificadoList = productosUltimoModificadoList;
    }

    /**
     * @return the productosCreadosList
     */
    @XmlTransient
    public List<Producto> getProductosCreadosList() {
        return productosCreadosList;
    }

    /**
     * @param productosCreadosList the productosCreadosList to set
     */
    public void setProductosCreadosList(List<Producto> productosCreadosList) {
        this.productosCreadosList = productosCreadosList;
    }

    @XmlTransient
    public List<Tienda> getTiendaList() {
        return tiendaList;
    }

    public void setTiendaList(List<Tienda> tiendaList) {
        this.tiendaList = tiendaList;
    }

    @XmlTransient
    public List<Cliente> getClienteList() {
        return clienteList;
    }

    public void setClienteList(List<Cliente> clienteList) {
        this.clienteList = clienteList;
    }

    @XmlTransient
    public List<Pedido> getPedidoList() {
        return pedidoList;
    }

    public void setPedidoList(List<Pedido> pedidoList) {
        this.pedidoList = pedidoList;
    }

    @XmlTransient
    public List<TipoCliente> getTipoClienteList() {
        return tipoClienteList;
    }

    public void setTipoClienteList(List<TipoCliente> tipoClienteList) {
        this.tipoClienteList = tipoClienteList;
    }

    @XmlTransient
    public List<EstadoPedido> getEstadoPedidoList() {
        return estadoPedidoList;
    }

    public void setEstadoPedidoList(List<EstadoPedido> estadoPedidoList) {
        this.estadoPedidoList = estadoPedidoList;
    }

    @XmlTransient
    public List<Estimacion> getEstimacionList() {
        return estimacionList;
    }

    public void setEstimacionList(List<Estimacion> estimacionList) {
        this.estimacionList = estimacionList;
    }

    @XmlTransient
    public List<Estimacion> getEstimacionList1() {
        return estimacionList1;
    }

    public void setEstimacionList1(List<Estimacion> estimacionList1) {
        this.estimacionList1 = estimacionList1;
    }

    @XmlTransient
    public List<PedidoFabrica> getCreadorPedidoFabricaList() {
        return creadorPedidoFabricaList;
    }

    public void setCreadorPedidoFabricaList(List<PedidoFabrica> creadorPedidoFabricaList) {
        this.creadorPedidoFabricaList = creadorPedidoFabricaList;
    }

    @XmlTransient
    public List<PedidoFabrica> getUltimoUsuarioPedidoFabricaList() {
        return ultimoUsuarioPedidoFabricaList;
    }

    public void setUltimoUsuarioPedidoFabricaList(List<PedidoFabrica> ultimoUsuarioPedidoFabricaList) {
        this.ultimoUsuarioPedidoFabricaList = ultimoUsuarioPedidoFabricaList;
    }

    @XmlTransient
    public List<PvpInternacional> getPvpInternacionalList() {
        return pvpInternacionalList;
    }

    public void setPvpInternacionalList(List<PvpInternacional> pvpInternacionalList) {
        this.pvpInternacionalList = pvpInternacionalList;
    }

    @XmlTransient
    public List<PvpInternacional> getPvpInternacionalList1() {
        return pvpInternacionalList1;
    }

    public void setPvpInternacionalList1(List<PvpInternacional> pvpInternacionalList1) {
        this.pvpInternacionalList1 = pvpInternacionalList1;
    }

    @XmlTransient
    public List<FacturaMultimarca> getFacturaMultimarcaList() {
        return facturaMultimarcaList;
    }

    public void setFacturaMultimarcaList(List<FacturaMultimarca> facturaMultimarcaList) {
        this.facturaMultimarcaList = facturaMultimarcaList;
    }

    @XmlTransient
    public List<MultiplicadorProductoPedido> getMultiplicadorProductoPedidoList() {
        return multiplicadorProductoPedidoList;
    }

    public void setMultiplicadorProductoPedidoList(List<MultiplicadorProductoPedido> multiplicadorProductoPedidoList) {
        this.multiplicadorProductoPedidoList = multiplicadorProductoPedidoList;
    }

    @XmlTransient
    public List<NivelPrecioProducto> getNivelPrecioProductoList() {
        return nivelPrecioProductoList;
    }

    public void setNivelPrecioProductoList(List<NivelPrecioProducto> nivelPrecioProductoList) {
        this.nivelPrecioProductoList = nivelPrecioProductoList;
    }

    @XmlTransient
    public List<TipoTienda> getTipoTiendaList() {
        return tipoTiendaList;
    }

    public void setTipoTiendaList(List<TipoTienda> tipoTiendaList) {
        this.tipoTiendaList = tipoTiendaList;
    }

    @XmlTransient
    public List<NivelPrecioTipoTienda> getNivelPrecioTipoTiendaList() {
        return nivelPrecioTipoTiendaList;
    }

    public void setNivelPrecioTipoTiendaList(List<NivelPrecioTipoTienda> nivelPrecioTipoTiendaList) {
        this.nivelPrecioTipoTiendaList = nivelPrecioTipoTiendaList;
    }

    @XmlTransient
    public List<Notificacion> getNotificacionList() {
        return notificacionList;
    }

    public void setNotificacionList(List<Notificacion> notificacionList) {
        this.notificacionList = notificacionList;
    }

    @XmlTransient
    public List<TerminalPuntoVenta> getTerminalPuntoVentaList() {
        return terminalPuntoVentaList;
    }

    public void setTerminalPuntoVentaList(List<TerminalPuntoVenta> terminalPuntoVentaList) {
        this.terminalPuntoVentaList = terminalPuntoVentaList;
    }

    @XmlTransient
    public List<EnvioTraspasoMercancia> getEnvioTraspasoMercanciaList() {
        return envioTraspasoMercanciaList;
    }

    public void setEnvioTraspasoMercanciaList(List<EnvioTraspasoMercancia> envioTraspasoMercanciaList) {
        this.envioTraspasoMercanciaList = envioTraspasoMercanciaList;
    }

    @XmlTransient
    public List<Almacen> getAlmacenList() {
        return almacenList;
    }

    public void setAlmacenList(List<Almacen> almacenList) {
        this.almacenList = almacenList;
    }

    @XmlTransient
    public List<RecepcionTraspasoMercancia> getRecepcionTraspasoMercanciaList() {
        return recepcionTraspasoMercanciaList;
    }

    public void setRecepcionTraspasoMercanciaList(List<RecepcionTraspasoMercancia> recepcionTraspasoMercanciaList) {
        this.recepcionTraspasoMercanciaList = recepcionTraspasoMercanciaList;
    }

    @XmlTransient
    public List<TipoAlmacen> getTipoAlmacenList() {
        return tipoAlmacenList;
    }

    public void setTipoAlmacenList(List<TipoAlmacen> tipoAlmacenList) {
        this.tipoAlmacenList = tipoAlmacenList;
    }

    @XmlTransient
    public List<PeticionTraspasoMercancia> getPeticionTraspasoMercanciaList() {
        return peticionTraspasoMercanciaList;
    }

    public void setPeticionTraspasoMercanciaList(List<PeticionTraspasoMercancia> peticionTraspasoMercanciaList) {
        this.peticionTraspasoMercanciaList = peticionTraspasoMercanciaList;
    }

    @XmlTransient
    public List<UsuarioTienda> getUsuarioTiendaList() {
        return usuarioTiendaList;
    }

    public void setUsuarioTiendaList(List<UsuarioTienda> usuarioTiendaList) {
        this.usuarioTiendaList = usuarioTiendaList;
    }

    @XmlTransient
    public List<UsuarioTienda> getUsuarioTiendaCreadorList() {
        return usuarioTiendaCreadorList;
    }

    public void setUsuarioTiendaCreadorList(List<UsuarioTienda> usuarioTiendaCreadorList) {
        this.usuarioTiendaCreadorList = usuarioTiendaCreadorList;
    }

    @XmlTransient
    public List<Ticket> getTicketList() {
        return ticketList;
    }

    public void setTicketList(List<Ticket> ticketList) {
        this.ticketList = ticketList;
    }

    @XmlTransient
    public List<Caja> getCajaList() {
        return cajaList;
    }

    public void setCajaList(List<Caja> cajaList) {
        this.cajaList = cajaList;
    }
    
    public List<Almacen> getAlmacenesDeUsuario(){
        List<Almacen> almacenes=new ArrayList<Almacen>();
        for (UsuarioTienda usuarioTienda : getUsuarioTiendaList()) {
            Tienda t=usuarioTienda.getTienda();
            for (AlmacenTienda almacenTienda : t.getAlmacenTiendaList()) {
                Almacen almacenVentas=almacenTienda.getAlmacen();
                almacenes.add(almacenVentas);
                if(almacenVentas.getAlmacenList()!=null && !almacenVentas.getAlmacenList().isEmpty()){
                   almacenes.addAll(almacenVentas.getAlmacenList());
                }
            }
        }
        return almacenes;
    }
    
    public List<Almacen> getAlmacenesReservaDeUsuario(){
        List<Almacen> almacenes=new ArrayList<Almacen>();
        for (UsuarioTienda usuarioTienda : getUsuarioTiendaList()) {
            Tienda t=usuarioTienda.getTienda();
            for (AlmacenTienda almacenTienda : t.getAlmacenTiendaList()) {
                Almacen almacenVentas=almacenTienda.getAlmacen();
                if(almacenVentas.getAlmacenList()!=null && !almacenVentas.getAlmacenList().isEmpty()){
                   almacenes.addAll(almacenVentas.getAlmacenList());
                }
            }
        }
        return almacenes;
    }
    
    public List<Almacen> getAlmacenesVentaDeUsuario(){
        List<Almacen> almacenes=new ArrayList<Almacen>();
        for (UsuarioTienda usuarioTienda : getUsuarioTiendaList()) {
            Tienda t=usuarioTienda.getTienda();
            for (AlmacenTienda almacenTienda : t.getAlmacenTiendaList()) {
                almacenes.add(almacenTienda.getAlmacen());
            }
        }
        return almacenes;
    }
}
